//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop   
#include "f_Ordenadores.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmOrdenadores *frmOrdenadores;
//---------------------------------------------------------------------------
__fastcall TfrmOrdenadores::TfrmOrdenadores(TComponent* Owner, Ordenadores * ordOrdenador): TForm(Owner)
{
	ordOrdenadores = ordOrdenador;
}
//---------------------------------------------------------------------------
void TfrmOrdenadores::atualiza()
{
	ordOrdenadores->listar(lstBubbleSort->Items, 0);
	ordOrdenadores->listar(lstInsertionSort->Items, 1);
	ordOrdenadores->listar(lstMergeSort->Items, 2);
	ordOrdenadores->listar(lstQuickSort->Items, 3);
	ordOrdenadores->listar(lstSelectionSort->Items, 4);
	ordOrdenadores->listar(lstValores->Items, 5);
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrdenadores::edtValorKeyPress(TObject *Sender, char &Key)
{
	if(!isdigit(Key))
	{
		Key = 0;
	}	
}
//---------------------------------------------------------------------------

void __fastcall TfrmOrdenadores::btnLimparClick(TObject *Sender)
{
	ordOrdenadores->limpar();
    atualiza();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrdenadores::btnAleatorioClick(TObject *Sender)
{
	ordOrdenadores->insere(rand()%256); 
	atualiza();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrdenadores::btnInserirClick(TObject *Sender)
{
	ordOrdenadores->insere(StrToIntDef(edtValor->Text, 0));
	atualiza();
}
//---------------------------------------------------------------------------
void __fastcall TfrmOrdenadores::btnOrdenarClick(TObject *Sender)
{
	clock_t t1,t2, t3, t4, t5, t6, t7, t8, t9, t10;
	t1 = t2 = 0;

	t1 = clock();
	ordOrdenadores->ordenacaoBubble();
	t2 = clock();
	edtTempoBubble->Text = IntToStr(t2 - t1);

	t3 = clock();
	ordOrdenadores->ordenacaoInsertion();
	t4 = clock();
	edtTempoInsertion->Text = IntToStr(t4 - t3);

	t5 = clock();
	ordOrdenadores->ordenacaoMerge();
	t6 = clock();
	edtTempoMerge->Text = IntToStr(t6 - t5);

	t7 = clock();
	//ordOrdenadores->ordenacaoQuick();
	t8 = clock();
	edtTempoQuick->Text = IntToStr(t8 - t7);

	t9 = clock();
	ordOrdenadores->ordenacaoSelection();
	t10 = clock();
	edtTempoSelection->Text = IntToStr(t10 - t9);

	atualiza();
}
//---------------------------------------------------------------------------

void __fastcall TfrmOrdenadores::FormShow(TObject *Sender)
{
	atualiza();	
}
//---------------------------------------------------------------------------

